Расширение Yii
==============

Расширение функциональности Yii — стандартная практика в процессе разработки. Например,
при написании нового контроллера вам необходимо расширить Yii путём наследования его класса
[CController]; при написании виджета — класса [CWidget] или класса уже существующего виджета.
Если созданный код предназначен для повторного его использования сторонними разработчиками,
то мы называем его *расширением (extension)*.

Как правило, каждое расширение решает только одну задачу. Используя терминологию, принятую в Yii,
расширения можно классифицировать следующим образом:

 * [компонент приложения](/doc/guide/basics.application#application-component);
 * [поведение](/doc/guide/basics.component#component-behavior);
 * [виджет](/doc/guide/basics.view#widget);
 * [контроллер](/doc/guide/basics.controller);
 * [действие](/doc/guide/basics.controller#action);
 * [фильтр](/doc/guide/basics.controller#filter);
 * [команда консоли](/doc/guide/topics.console);
 * валидатор: компонент, наследующий класс [CValidator];
 * помощник: класс, содержащий только статические методы, похожие на глобальные функции, использующие имя класса в качестве пространства имён;
 * [модуль](/doc/guide/basics.module): самодостаточная программная единица, состоящая из [моделей](/doc/guide/basics.model), [действий](/doc/guide/basics.view), [контроллеров](/doc/guide/basics.controller) и вспомогательных компонентов.  Модуль во многом схож с [приложением](/doc/guide/basics.application).
Основное отличие состоит в том, что модули входят в состав приложения. Например, у нас может быть модуль, предоставляющий возможность управления пользователями.

Впрочем, расширение может и не соответствовать ни одной из перечисленных категорий. Yii изначально был
спроектирован таким образом, что практически любую его часть можно изменить и дополнить для любых нужд.